iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 15
0
AI & Data

Tensorflow2.0系列 第 15

房價預測模型(二)

  • 分享至 

  • xImage
  •  

延續昨天我們知道可訓練的資料為12967筆,而每一筆有21種資訊,我們可以建立神經網路、訓練模型,進一步繪製損失值的折線圖並算出資料的誤差百分比。搭建全連結網路模型這裡我要搭建三層全連結的網路架構,並且使用ReLU作為隱藏層的激活函數。

model = keras.Sequential(name = 'model-1')
model.add(layers.Dense(64,input_shape=(21,),activation='relu'))
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(1))
model.summary()

這樣我們就能看出我們搭建的三層網路
https://ithelp.ithome.com.tw/upload/images/20200925/20130246VSQqtuHT8W.png

設定訓練使用的優化器、損失函數和指標函數

model.compile(keras.optimizers.Adam(0.001),
loss=keras.losses.MeanSquaredError(),
metrics=[keras.metrics.MeanSquaredError()])

建立模型儲存目錄

model_dir = 'lab2-logs/models/'
os.makedirs(model_dir)

設定回調函數

log_dir = os.path.join('lab-logs','model-1')
model_cbk = keras.callbacks.TensorBoard(log_dir=log_dir)
model_mckp = keras.callbacks.ModelCheckpoint(model_dir + '/Best-model-1.h5 ',moniter = 'val_mean_absolute_error',save_best_only=True,mode='min')

訓練網路模型

history = model.fit(x_train,y_train,batch_size=64,epochs=300,validation_data=(x_val,y_val),callbacks=[model_cbk,model_mckp])

繪製損失值折線圖

在model.compile已經將損失直設為均方誤差,所以history紀錄的loss和val_loss為mean squared error損失函數所計算出來的損失值。

plt.plot(history.history['loss'],label = 'train')
plt.plot(history.history['val_loss'],label = 'validation')
plt.ylabel('loss')
plt.xlabel('epochs')
plt.legend(loc = 'upper right')

https://ithelp.ithome.com.tw/upload/images/20200925/20130246iYH7Vd5Yso.png

測試資料的誤差百分比

model.load_weights('lab2-logs/models/Best-model-1.h5')
y_test = np.array(test_data['price'])
test_data =(test_data - mean) /std
x_test = np.array(test_data.drop('price',axis='columns'))
y_pred=model.predict(x_test)
y_pred=np.reshape(y_pred*std[‘price’]+mean[‘price’], y_test.shape)
percentage=np.mean(y_test-y_pred)/np.mean(y_test)*100
print(percentage)

結果為14.08%

結論

這個例子是我參考書及上面的,但越到後面的程式碼我越不懂,因此我會以這次的程式碼裡面我不懂的地方下去研究,在往後的文章講解,希望到時候我能了解全部。


上一篇
房價預測模型
下一篇
Underfitted&Overfitted
系列文
Tensorflow2.030
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言